﻿using System;
using System.Text.RegularExpressions;
using System.Web;

namespace WeiSha.Core
{
	// Token: 0x0200001F RID: 31
	public class Browser
	{
		// Token: 0x17000045 RID: 69
		// (get) Token: 0x060000D9 RID: 217 RVA: 0x00006D38 File Offset: 0x00004F38
		public static bool IsMobile
		{
			get
			{
				try
				{
					HttpContext httpContext = HttpContext.Current;
					string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
					bool flag = string.IsNullOrWhiteSpace(text);
					if (flag)
					{
						return false;
					}
					Regex regex = new Regex("android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\\\/|plucker|pocket|psp|symbian|treo|up\\\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline);
					Regex regex2 = new Regex("1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\\\-(n|u)|c55\\\\/|capi|ccwa|cdm\\\\-|cell|chtm|cldc|cmd\\\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\\\-|_)|g1 u|g560|gene|gf\\\\-5|g\\\\-mo|go(\\\\.w|od)|gr(ad|un)|haie|hcit|hd\\\\-(m|p|t)|hei\\\\-|hi(pt|ta)|hp( i|ip)|hs\\\\-c|ht(c(\\\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\\\-(20|go|ma)|i230|iac( |\\\\-|\\\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\\\/)|klon|kpt |kwc\\\\-|kyo(c|k)|le(no|xi)|lg( g|\\\\/(k|l|u)|50|54|e\\\\-|e\\\\/|\\\\-[a-w])|libw|lynx|m1\\\\-w|m3ga|m50\\\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\\\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\\\-2|po(ck|rt|se)|prox|psio|pt\\\\-g|qa\\\\-a|qc(07|12|21|32|60|\\\\-[2-7]|i\\\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\\\-|oo|p\\\\-)|sdk\\\\/|se(c(\\\\-|0|1)|47|mc|nd|ri)|sgh\\\\-|shar|sie(\\\\-|m)|sk\\\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\\\-|v\\\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\\\-|tdg\\\\-|tel(i|m)|tim\\\\-|t\\\\-mo|to(pl|sh)|ts(70|m\\\\-|m3|m5)|tx\\\\-9|up(\\\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\\\\-|2|g)|yas\\\\-|your|zeto|zte\\\\-", RegexOptions.IgnoreCase | RegexOptions.Multiline);
					bool flag2 = string.IsNullOrWhiteSpace(text);
					if (flag2)
					{
						return false;
					}
					bool flag3 = regex.IsMatch(text);
					if (flag3)
					{
						return true;
					}
					bool flag4 = text.Length >= 4 && regex2.IsMatch(text.Substring(0, 4));
					if (flag4)
					{
						return true;
					}
				}
				catch
				{
					return false;
				}
				return false;
			}
		}

		// Token: 0x17000046 RID: 70
		// (get) Token: 0x060000DA RID: 218 RVA: 0x00006DF8 File Offset: 0x00004FF8
		public static bool IsWeixin
		{
			get
			{
				HttpContext httpContext = HttpContext.Current;
				string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
				bool flag = string.IsNullOrWhiteSpace(text);
				bool flag2;
				if (flag)
				{
					flag2 = false;
				}
				else
				{
					bool flag3 = text.ToLower().Contains("micromessenger");
					flag2 = flag3;
				}
				return flag2;
			}
		}

		// Token: 0x17000047 RID: 71
		// (get) Token: 0x060000DB RID: 219 RVA: 0x00006E50 File Offset: 0x00005050
		public static bool IsWeixinApp
		{
			get
			{
				HttpContext httpContext = HttpContext.Current;
				string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
				bool flag = string.IsNullOrWhiteSpace(text);
				bool flag2;
				if (flag)
				{
					flag2 = false;
				}
				else
				{
					bool flag3 = text.ToLower().Contains("miniprogram");
					flag2 = flag3;
				}
				return flag2;
			}
		}

		// Token: 0x17000048 RID: 72
		// (get) Token: 0x060000DC RID: 220 RVA: 0x00006EA8 File Offset: 0x000050A8
		public static bool IsDestopApp
		{
			get
			{
				HttpContext httpContext = HttpContext.Current;
				string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
				bool flag = string.IsNullOrWhiteSpace(text);
				bool flag2;
				if (flag)
				{
					flag2 = false;
				}
				else
				{
					Regex regex = new Regex("DeskApp\\(.[^\\)]*\\)");
					bool flag3 = regex.IsMatch(text);
					flag2 = flag3;
				}
				return flag2;
			}
		}

		// Token: 0x17000049 RID: 73
		// (get) Token: 0x060000DD RID: 221 RVA: 0x00006F08 File Offset: 0x00005108
		public static bool IsAPICloud
		{
			get
			{
				HttpContext httpContext = HttpContext.Current;
				string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
				bool flag = string.IsNullOrWhiteSpace(text);
				bool flag2;
				if (flag)
				{
					flag2 = false;
				}
				else
				{
					bool flag3 = text.ToLower().Contains("apicloud");
					flag2 = flag3;
				}
				return flag2;
			}
		}

		// Token: 0x1700004A RID: 74
		// (get) Token: 0x060000DE RID: 222 RVA: 0x00006F60 File Offset: 0x00005160
		public static bool IsIPhone
		{
			get
			{
				HttpContext httpContext = HttpContext.Current;
				string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
				bool flag = string.IsNullOrWhiteSpace(text);
				bool flag2;
				if (flag)
				{
					flag2 = false;
				}
				else
				{
					Regex regex = new Regex("ip(hone|od)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
					bool flag3 = regex.IsMatch(text);
					flag2 = flag3;
				}
				return flag2;
			}
		}

		// Token: 0x1700004B RID: 75
		// (get) Token: 0x060000DF RID: 223 RVA: 0x00006FC0 File Offset: 0x000051C0
		public static bool IsIPad
		{
			get
			{
				HttpContext httpContext = HttpContext.Current;
				string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
				bool flag = string.IsNullOrWhiteSpace(text);
				bool flag2;
				if (flag)
				{
					flag2 = false;
				}
				else
				{
					Regex regex = new Regex("ipad", RegexOptions.IgnoreCase | RegexOptions.Multiline);
					bool flag3 = regex.IsMatch(text);
					flag2 = flag3;
				}
				return flag2;
			}
		}

		// Token: 0x1700004C RID: 76
		// (get) Token: 0x060000E0 RID: 224 RVA: 0x00007020 File Offset: 0x00005220
		public static string IP
		{
			get
			{
				string text = string.Empty;
				text = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
				bool flag = text != null && text != string.Empty;
				if (flag)
				{
					bool flag2 = text.IndexOf(".") == -1;
					if (flag2)
					{
						text = null;
					}
					else
					{
						bool flag3 = text.IndexOf(",") != -1;
						if (flag3)
						{
							text = text.Replace(" ", "").Replace("\"", "");
							string[] array = text.Split(",;".ToCharArray());
							for (int i = 0; i < array.Length; i++)
							{
								bool flag4 = Browser.IsIPAddress(array[i]) && array[i].Substring(0, 3) != "10." && array[i].Substring(0, 7) != "192.168" && array[i].Substring(0, 7) != "172.16.";
								if (flag4)
								{
									return array[i];
								}
							}
						}
						else
						{
							bool flag5 = Browser.IsIPAddress(text);
							if (flag5)
							{
								return text;
							}
							text = null;
						}
					}
				}
				string text2 = ((HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != string.Empty) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
				bool flag6 = text == null || text == string.Empty;
				if (flag6)
				{
					text = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
				}
				bool flag7 = text == null || text == string.Empty;
				if (flag7)
				{
					text = HttpContext.Current.Request.UserHostAddress;
				}
				return text;
			}
		}

		// Token: 0x1700004D RID: 77
		// (get) Token: 0x060000E1 RID: 225 RVA: 0x00007240 File Offset: 0x00005440
		public static bool IsLocalIP
		{
			get
			{
				string ip = Browser.IP;
				bool flag = ip == "127.0.0.1";
				bool flag2;
				if (flag)
				{
					flag2 = true;
				}
				else
				{
					bool flag3 = Server.Domain.ToLower().Trim() == "localhost";
					flag2 = flag3;
				}
				return flag2;
			}
		}

		// Token: 0x060000E2 RID: 226 RVA: 0x00007290 File Offset: 0x00005490
		private static bool IsIPAddress(string str1)
		{
			bool flag = str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15;
			bool flag2;
			if (flag)
			{
				flag2 = false;
			}
			else
			{
				string text = "^\\d{1,3}[\\.]\\d{1,3}[\\.]\\d{1,3}[\\.]\\d{1,3}$";
				Regex regex = new Regex(text, RegexOptions.IgnoreCase);
				flag2 = regex.IsMatch(str1);
			}
			return flag2;
		}

		// Token: 0x1700004E RID: 78
		// (get) Token: 0x060000E3 RID: 227 RVA: 0x000072E8 File Offset: 0x000054E8
		public static string Type
		{
			get
			{
				HttpBrowserCapabilities browser = HttpContext.Current.Request.Browser;
				return browser.Type;
			}
		}

		// Token: 0x1700004F RID: 79
		// (get) Token: 0x060000E4 RID: 228 RVA: 0x00007310 File Offset: 0x00005510
		public static string Name
		{
			get
			{
				HttpBrowserCapabilities browser = HttpContext.Current.Request.Browser;
				return browser.Browser;
			}
		}

		// Token: 0x17000050 RID: 80
		// (get) Token: 0x060000E5 RID: 229 RVA: 0x00007338 File Offset: 0x00005538
		public static string Version
		{
			get
			{
				HttpBrowserCapabilities browser = HttpContext.Current.Request.Browser;
				return browser.Version;
			}
		}

		// Token: 0x17000051 RID: 81
		// (get) Token: 0x060000E6 RID: 230 RVA: 0x00007360 File Offset: 0x00005560
		public static string OS
		{
			get
			{
				string text = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
				bool flag = text.Contains("Windows");
				string text2;
				if (flag)
				{
					bool flag2 = text.Contains("Windows NT 10");
					if (flag2)
					{
						text2 = "Windows 10";
					}
					else
					{
						bool flag3 = text.Contains("Windows NT 11");
						if (flag3)
						{
							text2 = "Windows 11";
						}
						else
						{
							bool flag4 = text.Contains("Windows NT 6.3");
							if (flag4)
							{
								text2 = "Windows 8.1";
							}
							else
							{
								bool flag5 = text.Contains("Windows NT 6.2");
								if (flag5)
								{
									text2 = "Windows 8";
								}
								else
								{
									bool flag6 = text.Contains("Windows NT 6.1");
									if (flag6)
									{
										text2 = "Windows 7";
									}
									else
									{
										bool flag7 = text.Contains("Windows NT 6.0");
										if (flag7)
										{
											text2 = "Windows Vista";
										}
										else
										{
											bool flag8 = text.Contains("Windows NT 5.1") || text.Contains("Windows NT 5.2");
											if (flag8)
											{
												text2 = "Windows XP";
											}
											else
											{
												text2 = "Windows";
											}
										}
									}
								}
							}
						}
					}
				}
				else
				{
					bool flag9 = text.Contains("Mac");
					if (flag9)
					{
						text2 = "Mac";
					}
					else
					{
						bool flag10 = text.Contains("Android");
						if (flag10)
						{
							text2 = "Android";
						}
						else
						{
							bool flag11 = text.Contains("Linux");
							if (flag11)
							{
								text2 = "Linux";
							}
							else
							{
								bool flag12 = text.Contains("SunOS");
								if (flag12)
								{
									text2 = "SunOS";
								}
								else
								{
									bool flag13 = text.Contains("iOS");
									if (flag13)
									{
										text2 = "iOS";
									}
									else
									{
										text2 = "";
									}
								}
							}
						}
					}
				}
				return text2;
			}
		}

		// Token: 0x17000052 RID: 82
		// (get) Token: 0x060000E7 RID: 231 RVA: 0x00007500 File Offset: 0x00005700
		public static string MobileOS
		{
			get
			{
				HttpContext httpContext = HttpContext.Current;
				string text = httpContext.Request.ServerVariables["HTTP_USER_AGENT"];
				Regex regex = new Regex("android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\\\/|plucker|pocket|psp|symbian|treo|up\\\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline);
				MatchCollection matchCollection = regex.Matches(text);
				bool flag = matchCollection.Count < 1;
				string text2;
				if (flag)
				{
					text2 = Browser.OS;
				}
				else
				{
					text2 = matchCollection[0].Value;
				}
				return text2;
			}
		}

		// Token: 0x17000053 RID: 83
		// (get) Token: 0x060000E8 RID: 232 RVA: 0x00007568 File Offset: 0x00005768
		public static string PhoneNumber
		{
			get
			{
				string text = "";
				HttpContext httpContext = HttpContext.Current;
				bool flag = httpContext.Request.ServerVariables["DEVICEID"] != null;
				if (flag)
				{
					text = httpContext.Request.ServerVariables["DEVICEID"].ToString();
				}
				bool flag2 = httpContext.Request.ServerVariables["HTTP_X_UP_subno"] != null;
				if (flag2)
				{
					text = httpContext.Request.ServerVariables["HTTP_X_UP_subno"].ToString();
					text = text.Substring(3, 11);
				}
				bool flag3 = httpContext.Request.ServerVariables["HTTP_X_NETWORK_INFO"] != null;
				if (flag3)
				{
					text = httpContext.Request.ServerVariables["HTTP_X_NETWORK_INFO"].ToString();
				}
				bool flag4 = httpContext.Request.ServerVariables["HTTP_X_UP_CALLING_LINE_ID"] != null;
				if (flag4)
				{
					text = httpContext.Request.ServerVariables["HTTP_X_UP_CALLING_LINE_ID"].ToString();
				}
				return text;
			}
		}
	}
}
